define(['Utils/DataPoints', 'dojo/request'], function(DataPoints, request) {
  'use strict';

  /**
   * 雨量预报数据获取接口，暂时通过Mock获取
   *
   *
   */
  function RainfallDataAPI() {
    this.callback = null; //用于回调，传数据
    this.error = null; //用于回调，返回错误信息
  }

  /**
   * 获取欧洲中心降水数据
   * @param {Date} queryTime 数据日期.
   * @param {Number[]} validTime 数据时间类型(3、6、12小时降水).
   *
   * @returns {JSON} 返回降水JSON数据
   */
  RainfallDataAPI.prototype.getEuropeanData = function(queryTime, validTime, callback, error) {
    var that = this;
    that.callback = callback;
    that.error = error;

    $.ajax({
      type: 'GET',
      url:
        'http://61.157.118.158:8088/sndm/api/nafpInterface/getEurNafpEleGridInRectByTimeAndLevelAndValidtime',
      dataType: 'json',
      data: { validTime: validTime, times: queryTime }, //请求参数
      success: function(data) {
        if (data.returnCode == 0) {
          //发送请求成功后的操作
          that.showResult(new DataPoints(data));
        } else {
          alert(data.returnMessage);
        }
      },
      error: function() {
        //发送请求失败后的操作
        alert('获取数据失败!');
        that.showError();
      }
    });

    // var that = this;
    // that.callback = callback;
    // request
    //   .get(
    //     '/src/data/欧洲' + validTime + '.json', //请求地址
    //     {
    //       handleAs: 'json' //返回的是json数据
    //     }
    //   )
    //   .then(
    //     function(dt) {
    //       //发送请求成功后的操作
    //       that.showResult(new DataPoints(dt));
    //     },
    //     function(error) {
    //       //发送请求失败后的操作
    //       alert('获取失败' + error);
    //     }
    //   );
  };

  /**
   * 获取西南区域模式降水数据
   * @param {Date} queryTime 数据日期.
   * @param {Number[]} validTime 数据时间类型(3、6、12小时降水).
   *
   * @returns {JSON} 返回降水JSON数据
   */
  RainfallDataAPI.prototype.getSouthWestData = function(queryTime, validTime, callback, error) {
    var that = this;
    that.callback = callback;
    that.error = error;

    $.ajax({
      type: 'GET',
      url:
        'http://61.157.118.158:8088/sndm/api/nafpInterface/getSiChuanNafpEleGridInRectByTimeAndLevelAndValidtime',
      dataType: 'json',
      // jsonp: 'callback', //跨域请求的参数名，默认是 callback
      // jsonpCallback: 'success_jsonpCallback',
      data: { validTime: validTime, times: queryTime }, //请求参数
      success: function(data) {
        if (data.returnCode == 0) {
          //发送请求成功后的操作
          that.showResult(new DataPoints(data));
        } else {
          alert(data.returnMessage);
        }
      },
      error: function() {
        //发送请求失败后的操作
        alert('获取数据失败!');
        that.showError();
      }
    });

    // var that = this;
    // that.callback = callback;
    // request
    //   .get(
    //     '/src/data/四川' + validTime + '.json', //请求地址
    //     {
    //       handleAs: 'json' //返回的是json数据
    //     }
    //   )
    //   .then(
    //     function(dt) {
    //       //发送请求成功后的操作
    //       that.showResult(new DataPoints(dt));
    //     },
    //     function(error) {
    //       //发送请求失败后的操作
    //       alert('获取失败' + error);
    //     }
    //   );
  };

  /**
   * 获取数值预报反演降水数据
   * @param {Date} queryTime 数据日期.
   * @param {Number[]} validTime 数据时间类型(3、6、12小时降水).
   *
   * @returns {JSON} 返回降水JSON数据
   */
  RainfallDataAPI.prototype.getPredictionData = function(queryTime, validTime) {
    var that = this;
    that.callback = callback;
    that.error = error;

    $.ajax({
      type: 'GET',
      url: '',
      dataType: 'jsonp',
      jsonp: 'callback', //跨域请求的参数名，默认是 callback
      jsonpCallback: 'success_jsonpCallback',
      data: { validTime: validTime, times: queryTime }, //请求参数
      success: function(data) {
        //发送请求成功后的操作
        if (data.returnCode == 0) {
          //发送请求成功后的操作
          that.showResult(new DataPoints(data));
        } else {
          alert(data.returnMessage);
        }
      },
      error: function() {
        //发送请求失败后的操作
        alert('获取数据失败!');
        that.showError();
      }
    });
  };

  // 雷达反演3、6小时降水
  RainfallDataAPI.prototype.getRadarInversionData = function() {};

  // 回调函数
  RainfallDataAPI.prototype.showResult = function(result) {
    this.callback(result);
  };

  // 错误回调函数
  RainfallDataAPI.prototype.showError = function(error) {
    this.error(error);
  };

  return RainfallDataAPI;
});
